ステータス は「完了」しているものの、S3 バケット内のオブジェクトが復元されない原因を教えてください

ステータス は「完了」しているものの、S3 バケット内のオブジェクトが復元されない原因を教えてください

Clock Icon2023.12.01

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

困っていること

AWS Backup の復元ジョブ "EF111111-1122-2233-F544-0A9D55555555" ステータスは「完了」しています。 対象 S3 バケットを確認したところ、元の場所にオブジェクトが復元されていません。 原因と対処法を教えてください。

どう対応すればいいの?

原因としては、以下が考えられます。

  • 削除や変更などを実施していない
  • 引き受けるロール内のポリシー記述が誤っている

削除や変更などを実施していない

復元ジョブの実行前に、復元対象のオブジェクトについて、削除や変更などを実施しているかご確認ください。 S3 バケット内のオブジェクト(ファイル)の削除や変更を行わずに、復元ジョブを実施した場合、ステータスは「完了」するものの、S3 バケット内で何かオブジェクト(ファイル)が追加されることはございません。
削除や変更などを実施してからお試しください。

AWS Backup を使用して S3 標準ストレージクラスにバックアップした S3 データを復元できます。バケット内のすべてのオブジェクトまたは特定のオブジェクトを復元できます。既存のバケットまたは新しいバケットに復元できます。
特定のオブジェクトを復元すると、オブジェクトの現在のバージョンを復元できます。
S3 バックアップはリージョン間でコピーできますが、復元ジョブは元のバックアップまたはコピーが置かれている同じリージョンでのみ行われます。

引き受けるロール内のポリシー記述が誤っている

AWS Backup が引き受けるロール内のポリシー記述が誤っていないかご確認ください。一般的には、AWS Backup 用の管理ポリシー"AWSBackupServiceRolePolicyForS3Restore" を参考に ロールを作成するかと思います。

AWSBackupServiceRolePolicyForS3Restore
このポリシーには、S3 AWS Backup バックアップをバケットに復元するのに必要な権限が含まれています。これには、バケットへの読み取り権限と書き込み権限、および S3 AWS KMS オペレーションに関する任意のキーの使用が含まれます。

その際、S3 オブジェクトに対するアクション許可を指定する必要があり、"Resource" の arn 記述方法が誤っている可能性が考えられます。
"/*" の記述が不足している場合、復元は「完了」とジョブ一覧に表示はするものの、S3 バケット内のオブジェクトは復元されません。

例)

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:CreateBucket",
                "s3:ListBucketVersions",
                "s3:ListBucket",
                "s3:GetBucketVersioning",
                "s3:GetBucketLocation",
                "s3:PutBucketVersioning",
                "s3:PutBucketOwnershipControls",
                "s3:GetBucketOwnershipControls"
            ],
            "Resource": [
                "arn:aws:s3:::your-bucket-name"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:GetObjectVersion",
                "s3:DeleteObject",
                "s3:PutObjectVersionAcl",
                "s3:GetObjectVersionAcl",
                "s3:GetObjectTagging",
                "s3:PutObjectTagging",
                "s3:GetObjectAcl",
                "s3:PutObjectAcl",
                "s3:ListMultipartUploadParts",
                "s3:PutObject"
            ],
            "Resource": [
                "arn:aws:s3:::your-bucket-name/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "kms:DescribeKey",
                "kms:GenerateDataKey",
                "kms:Decrypt"
            ],
            "Resource": "*",
            "Condition": {
                "StringLike": {
                    "kms:ViaService": "s3.*.amazonaws.com"
                }
            }
        }
    ]
}

※ 抜粋箇所

            "Resource": [
                "arn:aws:s3:::your-bucket-name/*" ← /* を忘れずに
            ]

上記 2 点を調査して、事象が解消されるかご確認ください。

参考資料

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.